package com.xw.Handler;


import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

/**
 * @author 郭飞鹏
 * @date 2017年4月21日 上午9:09:59
 * 业务异常处理类  基于aop , 主要是排查Service层中出现的RuntimeException 
 */
@Component
@Aspect
public class ServiceExceptionHandler {
	private static Logger logger = LoggerFactory.getLogger(ServiceExceptionHandler.class);

	@Pointcut("execution( * com.xw.Service.*.*(..))")
	public void pointcut(){}
	
	@Around("pointcut()")
	public Object resolveException(ProceedingJoinPoint join) {
		try {
			return join.proceed();
		} catch (Throwable e) {
			if(e instanceof NullPointerException){
				logger.error("ERROR : 出现空指针异常", e);
			}
			//TODO 可以继续添加完善
		}
		return null;
	}

}
